<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>GtkTreeModelSort</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="home" href="index.html" title="GTK+ Reference Manual">
<link rel="up" href="TreeWidgetObjects.html" title="Tree, List and Icon Grid Widgets">
<link rel="prev" href="GtkTreeSortable.html" title="GtkTreeSortable">
<link rel="next" href="GtkTreeModelFilter.html" title="GtkTreeModelFilter">
<meta name="generator" content="GTK-Doc V1.11 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="part" href="gtk.html" title="Part I. GTK+ Overview">
<link rel="part" href="gtkbase.html" title="Part II. GTK+ Core Reference">
<link rel="part" href="gtkobjects.html" title="Part III. GTK+ Widgets and Objects">
<link rel="chapter" href="ch01.html" title="Object Hierarchy">
<link rel="chapter" href="ch02.html" title="Widget Gallery">
<link rel="chapter" href="WindowWidgets.html" title="Windows">
<link rel="chapter" href="DisplayWidgets.html" title="Display Widgets">
<link rel="chapter" href="ButtonWidgets.html" title="Buttons and Toggles">
<link rel="chapter" href="NumericEntry.html" title="Numeric/Text Data Entry">
<link rel="chapter" href="TextWidgetObjects.html" title="Multiline Text Editor">
<link rel="chapter" href="TreeWidgetObjects.html" title="Tree, List and Icon Grid Widgets">
<link rel="chapter" href="MenusAndCombos.html" title="Menus, Combo Box, Toolbar">
<link rel="chapter" href="Actions.html" title="Action-based menus and toolbars">
<link rel="chapter" href="SelectorWidgets.html" title="Selectors (File/Font/Color/Input Devices)">
<link rel="chapter" href="LayoutContainers.html" title="Layout Containers">
<link rel="chapter" href="Ornaments.html" title="Ornaments">
<link rel="chapter" href="ScrollingWidgets.html" title="Scrolling">
<link rel="chapter" href="Printing.html" title="Printing">
<link rel="chapter" href="MiscObjects.html" title="Miscellaneous">
<link rel="chapter" href="AbstractObjects.html" title="Abstract Base Classes">
<link rel="chapter" href="PlugSocket.html" title="Cross-process Embedding">
<link rel="chapter" href="SpecialObjects.html" title="Special-purpose features">
<link rel="chapter" href="RecentDocuments.html" title="Recently Used Documents">
<link rel="chapter" href="Builder.html" title="Interface builder">
<link rel="chapter" href="DeprecatedObjects.html" title="Deprecated">
<link rel="part" href="migrating.html" title="Part IV. Migrating from Previous Versions of GTK+">
<link rel="chapter" href="gtk-migrating-checklist.html" title="Migration Checklist">
<link rel="chapter" href="gtk-migrating-GtkFileChooser.html" title="Migrating from GtkFileSelection to GtkFileChooser">
<link rel="chapter" href="gtk-migrating-GtkAction.html" title="Migrating from old menu and toolbar systems to GtkAction">
<link rel="chapter" href="gtk-migrating-GtkComboBox.html" title="Migrating from GtkOptionMenu and GtkCombo to GtkComboBox and GtkComboBoxEntry">
<link rel="chapter" href="gtk-migrating-GtkIconView.html" title="Migrating from GnomeIconList to GtkIconView">
<link rel="chapter" href="gtk-migrating-GtkAboutDialog.html" title="Migrating from GnomeAbout to GtkAboutDialog">
<link rel="chapter" href="gtk-migrating-GtkColorButton.html" title="Migrating from GnomeColorPicker to GtkColorButton">
<link rel="chapter" href="gtk-migrating-GtkAssistant.html" title="Migrating from GnomeDruid to GtkAssistant">
<link rel="chapter" href="gtk-migrating-GtkRecentChooser.html" title="Migrating from EggRecent to GtkRecentChooser">
<link rel="chapter" href="gtk-migrating-GtkLinkButton.html" title="Migrating from GnomeHRef to GtkLinkButton">
<link rel="chapter" href="gtk-migrating-GtkBuilder.html" title="Migrating from libglade to GtkBuilder">
<link rel="chapter" href="gtk-migrating-tooltips.html" title="Migrating from GtkTooltips to GtkTooltip">
<link rel="part" href="pt05.html" title="Part V. GTK+ Tools">
<link rel="glossary" href="glossary.html" title="Glossary">
<link rel="index" href="api-index-full.html" title="Index of all symbols">
<link rel="index" href="api-index-deprecated.html" title="Index of deprecated symbols">
<link rel="index" href="api-index-2-2.html" title="Index of new symbols in 2.2">
<link rel="index" href="api-index-2-4.html" title="Index of new symbols in 2.4">
<link rel="index" href="api-index-2-6.html" title="Index of new symbols in 2.6">
<link rel="index" href="api-index-2-8.html" title="Index of new symbols in 2.8">
<link rel="index" href="api-index-2-10.html" title="Index of new symbols in 2.10">
<link rel="index" href="api-index-2-12.html" title="Index of new symbols in 2.12">
<link rel="index" href="api-index-2-14.html" title="Index of new symbols in 2.14">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="GtkTreeSortable.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="TreeWidgetObjects.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GTK+ Reference Manual</th>
<td><a accesskey="n" href="GtkTreeModelFilter.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#GtkTreeModelSort.synopsis" class="shortcut">Top</a>
                 | 
                <a href="#GtkTreeModelSort.description" class="shortcut">Description</a>
                 | 
                <a href="#GtkTreeModelSort.object-hierarchy" class="shortcut">Object Hierarchy</a>
                 | 
                <a href="#GtkTreeModelSort.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
                 | 
                <a href="#GtkTreeModelSort.properties" class="shortcut">Properties</a>
</td></tr>
</table>
<div class="refentry" lang="en">
<a name="GtkTreeModelSort"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GtkTreeModelSort.top_of_page"></a>GtkTreeModelSort</span></h2>
<p>GtkTreeModelSort — A GtkTreeModel which makes an underlying tree model sortable</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<a name="GtkTreeModelSort.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">

#include &lt;gtk/gtk.h&gt;

                    <a class="link" href="GtkTreeModelSort.html#GtkTreeModelSort-struct" title="GtkTreeModelSort">GtkTreeModelSort</a>;
<a class="link" href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> *      <a class="link" href="GtkTreeModelSort.html#gtk-tree-model-sort-new-with-model" title="gtk_tree_model_sort_new_with_model ()">gtk_tree_model_sort_new_with_model</a>  (<a class="link" href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> *child_model);
<a class="link" href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> *      <a class="link" href="GtkTreeModelSort.html#gtk-tree-model-sort-get-model" title="gtk_tree_model_sort_get_model ()">gtk_tree_model_sort_get_model</a>       (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model);
<a class="link" href="GtkTreeModel.html#GtkTreePath" title="GtkTreePath">GtkTreePath</a> *       <a class="link" href="GtkTreeModelSort.html#gtk-tree-model-sort-convert-child-path-to-path" title="gtk_tree_model_sort_convert_child_path_to_path ()">gtk_tree_model_sort_convert_child_path_to_path</a>
                                                        (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreePath" title="GtkTreePath">GtkTreePath</a> *child_path);
<a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
>gboolean</a>            <a class="link" href="GtkTreeModelSort.html#gtk-tree-model-sort-convert-child-iter-to-iter" title="gtk_tree_model_sort_convert_child_iter_to_iter ()">gtk_tree_model_sort_convert_child_iter_to_iter</a>
                                                        (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter">GtkTreeIter</a> *sort_iter,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter">GtkTreeIter</a> *child_iter);
<a class="link" href="GtkTreeModel.html#GtkTreePath" title="GtkTreePath">GtkTreePath</a> *       <a class="link" href="GtkTreeModelSort.html#gtk-tree-model-sort-convert-path-to-child-path" title="gtk_tree_model_sort_convert_path_to_child_path ()">gtk_tree_model_sort_convert_path_to_child_path</a>
                                                        (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreePath" title="GtkTreePath">GtkTreePath</a> *sorted_path);
void                <a class="link" href="GtkTreeModelSort.html#gtk-tree-model-sort-convert-iter-to-child-iter" title="gtk_tree_model_sort_convert_iter_to_child_iter ()">gtk_tree_model_sort_convert_iter_to_child_iter</a>
                                                        (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter">GtkTreeIter</a> *child_iter,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter">GtkTreeIter</a> *sorted_iter);
void                <a class="link" href="GtkTreeModelSort.html#gtk-tree-model-sort-reset-default-sort-func" title="gtk_tree_model_sort_reset_default_sort_func ()">gtk_tree_model_sort_reset_default_sort_func</a>
                                                        (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort);
void                <a class="link" href="GtkTreeModelSort.html#gtk-tree-model-sort-clear-cache" title="gtk_tree_model_sort_clear_cache ()">gtk_tree_model_sort_clear_cache</a>     (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort);
<a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
>gboolean</a>            <a class="link" href="GtkTreeModelSort.html#gtk-tree-model-sort-iter-is-valid" title="gtk_tree_model_sort_iter_is_valid ()">gtk_tree_model_sort_iter_is_valid</a>   (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter">GtkTreeIter</a> *iter);
</pre>
</div>
<div class="refsect1" lang="en">
<a name="GtkTreeModelSort.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="synopsis">
  <a
href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject"
>GObject</a>
   +----GtkTreeModelSort
</pre>
</div>
<div class="refsect1" lang="en">
<a name="GtkTreeModelSort.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
<p>
GtkTreeModelSort implements
 <a class="link" href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a>,  <a class="link" href="gtk-GtkTreeView-drag-and-drop.html#GtkTreeDragSource">GtkTreeDragSource</a> and  <a class="link" href="GtkTreeSortable.html" title="GtkTreeSortable">GtkTreeSortable</a>.</p>
</div>
<div class="refsect1" lang="en">
<a name="GtkTreeModelSort.properties"></a><h2>Properties</h2>
<pre class="synopsis">
  "<a class="link" href="GtkTreeModelSort.html#GtkTreeModelSort--model" title='The "model" property'>model</a>"                    <a class="link" href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a>*         : Read / Write / Construct Only
</pre>
</div>
<div class="refsect1" lang="en">
<a name="GtkTreeModelSort.description"></a><h2>Description</h2>
<p>
The <a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a> is a model which implements the <a class="link" href="GtkTreeSortable.html" title="GtkTreeSortable"><span class="type">GtkTreeSortable</span></a>
interface.  It does not hold any data itself, but rather is created with
a child model and proxies its data.  It has identical column types to
this child model, and the changes in the child are propagated.  The
primary purpose of this model is to provide a way to sort a different
model without modifying it. Note that the sort function used by
<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a> is not guaranteed to be stable.
</p>
<p>
The use of this is best demonstrated through an example.  In the
following sample code we create two <a class="link" href="GtkTreeView.html" title="GtkTreeView"><span class="type">GtkTreeView</span></a> widgets each with a
view of the same data.  As the model is wrapped here by a
<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a>, the two <a class="link" href="GtkTreeView.html" title="GtkTreeView"><span class="type">GtkTreeView</span></a>s can each sort their
view of the data without affecting the other.  By contrast, if we
simply put the same model in each widget, then sorting the first would
sort the second.
</p>
<p>
</p>
<div class="example">
<a name="id3364040"></a><p class="title"><b>Example 20. Using a <span class="structname">GtkTreeModelSort</span></b></p>
<div class="example-contents"><pre class="programlisting">
{
  GtkTreeView *tree_view1;
  GtkTreeView *tree_view2;
  GtkTreeModel *sort_model1;
  GtkTreeModel *sort_model2;
  GtkTreeModel *child_model;
  /* get the child model */
  child_model = get_my_model ();
  /* Create the first tree */
  sort_model1 = gtk_tree_model_sort_new_with_model (child_model);
  tree_view1 = gtk_tree_view_new_with_model (sort_model1);
  /* Create the second tree */
  sort_model2 = gtk_tree_model_sort_new_with_model (child_model);
  tree_view2 = gtk_tree_view_new_with_model (sort_model2);
  /* Now we can sort the two models independently */
  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model1),
                                        COLUMN_1, GTK_SORT_ASCENDING);
  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model2),
                                        COLUMN_1, GTK_SORT_DESCENDING);
}
</pre></div>
</div>
<p><br class="example-break">
</p>
<p>
To demonstrate how to access the underlying child model from the sort
model, the next example will be a callback for the <a class="link" href="GtkTreeSelection.html" title="GtkTreeSelection"><span class="type">GtkTreeSelection</span></a>
"changed" signal.  In this callback, we get a string from COLUMN_1 of
the model.  We then modify the string, find the same selected row on the
child model, and change the row there.
</p>
<p>
</p>
<div class="example">
<a name="id3451132"></a><p class="title"><b>Example 21. Accessing the child model of in a selection changed callback</b></p>
<div class="example-contents"><pre class="programlisting">
void
selection_changed (GtkTreeSelection *selection, gpointer data)
{
  GtkTreeModel *sort_model = NULL;
  GtkTreeModel *child_model;
  GtkTreeIter sort_iter;
  GtkTreeIter child_iter;
  char *some_data = NULL;
  char *modified_data;
  /* Get the current selected row and the model. */
  if (! gtk_tree_selection_get_selected (selection,
                                         &amp;sort_model,
                                         &amp;sort_iter))
    return;
  /* Look up the current value on the selected row and get a new value
   * to change it to.
   */
  gtk_tree_model_get (GTK_TREE_MODEL (sort_model), &amp;sort_iter,
                      COLUMN_1, &amp;some_data,
                      -1);
  modified_data = change_the_data (some_data);
  g_free (some_data);
  /* Get an iterator on the child model, instead of the sort model. */
  gtk_tree_model_sort_convert_iter_to_child_iter (GTK_TREE_MODEL_SORT (sort_model),
                                                  &amp;child_iter,
                                                  &amp;sort_iter);
  /* Get the child model and change the value of the row.  In this
   * example, the child model is a GtkListStore.  It could be any other
   * type of model, though.
   */
  child_model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (sort_model));
  gtk_list_store_set (GTK_LIST_STORE (child_model), &amp;child_iter,
                      COLUMN_1, &amp;modified_data,
                      -1);
  g_free (modified_data);
}
</pre></div>
</div>
<p><br class="example-break">
</p>
</div>
<div class="refsect1" lang="en">
<a name="GtkTreeModelSort.details"></a><h2>Details</h2>
<div class="refsect2" lang="en">
<a name="GtkTreeModelSort-struct"></a><h3>GtkTreeModelSort</h3>
<pre class="programlisting">typedef struct _GtkTreeModelSort GtkTreeModelSort;</pre>
<p>
This should not be accessed directly.  Use the accessor functions below.
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="gtk-tree-model-sort-new-with-model"></a><h3>gtk_tree_model_sort_new_with_model ()</h3>
<pre class="programlisting"><a class="link" href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> *      gtk_tree_model_sort_new_with_model  (<a class="link" href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> *child_model);</pre>
<p>
Creates a new <a class="link" href="GtkTreeModel.html" title="GtkTreeModel"><span class="type">GtkTreeModel</span></a>, with <em class="parameter"><code>child_model</code></em> as the child model.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>child_model</code></em> :</span></p></td>
<td> A <a class="link" href="GtkTreeModel.html" title="GtkTreeModel"><span class="type">GtkTreeModel</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A new <a class="link" href="GtkTreeModel.html" title="GtkTreeModel"><span class="type">GtkTreeModel</span></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="gtk-tree-model-sort-get-model"></a><h3>gtk_tree_model_sort_get_model ()</h3>
<pre class="programlisting"><a class="link" href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a> *      gtk_tree_model_sort_get_model       (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model);</pre>
<p>
Returns the model the <a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a> is sorting.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>tree_model</code></em> :</span></p></td>
<td> a <a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> the "child model" being sorted
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="gtk-tree-model-sort-convert-child-path-to-path"></a><h3>gtk_tree_model_sort_convert_child_path_to_path ()</h3>
<pre class="programlisting"><a class="link" href="GtkTreeModel.html#GtkTreePath" title="GtkTreePath">GtkTreePath</a> *       gtk_tree_model_sort_convert_child_path_to_path
                                                        (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreePath" title="GtkTreePath">GtkTreePath</a> *child_path);</pre>
<p>
Converts <em class="parameter"><code>child_path</code></em> to a path relative to <em class="parameter"><code>tree_model_sort</code></em>.  That is,
<em class="parameter"><code>child_path</code></em> points to a path in the child model.  The returned path will
point to the same row in the sorted model.  If <em class="parameter"><code>child_path</code></em> isn't a valid 
path on the child model, then <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL--CAPS"
><code class="literal">NULL</code></a> is returned.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>tree_model_sort</code></em> :</span></p></td>
<td> A <a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>child_path</code></em> :</span></p></td>
<td> A <a class="link" href="GtkTreeModel.html#GtkTreePath" title="GtkTreePath"><span class="type">GtkTreePath</span></a> to convert
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A newly allocated <a class="link" href="GtkTreeModel.html#GtkTreePath" title="GtkTreePath"><span class="type">GtkTreePath</span></a>, or <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL--CAPS"
><code class="literal">NULL</code></a>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="gtk-tree-model-sort-convert-child-iter-to-iter"></a><h3>gtk_tree_model_sort_convert_child_iter_to_iter ()</h3>
<pre class="programlisting"><a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
>gboolean</a>            gtk_tree_model_sort_convert_child_iter_to_iter
                                                        (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter">GtkTreeIter</a> *sort_iter,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter">GtkTreeIter</a> *child_iter);</pre>
<p>
Sets <em class="parameter"><code>sort_iter</code></em> to point to the row in <em class="parameter"><code>tree_model_sort</code></em> that corresponds to
the row pointed at by <em class="parameter"><code>child_iter</code></em>.  If <em class="parameter"><code>sort_iter</code></em> was not set, <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#FALSE--CAPS"
><code class="literal">FALSE</code></a>
is returned.  Note: a boolean is only returned since 2.14.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>tree_model_sort</code></em> :</span></p></td>
<td> A <a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>sort_iter</code></em> :</span></p></td>
<td> An uninitialized <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter"><span class="type">GtkTreeIter</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>child_iter</code></em> :</span></p></td>
<td> A valid <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter"><span class="type">GtkTreeIter</span></a> pointing to a row on the child model
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#TRUE--CAPS"
><code class="literal">TRUE</code></a>, if <em class="parameter"><code>sort_iter</code></em> was set, i.e. if <em class="parameter"><code>sort_iter</code></em> is a
valid iterator pointer to a visible row in the child model.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="gtk-tree-model-sort-convert-path-to-child-path"></a><h3>gtk_tree_model_sort_convert_path_to_child_path ()</h3>
<pre class="programlisting"><a class="link" href="GtkTreeModel.html#GtkTreePath" title="GtkTreePath">GtkTreePath</a> *       gtk_tree_model_sort_convert_path_to_child_path
                                                        (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreePath" title="GtkTreePath">GtkTreePath</a> *sorted_path);</pre>
<p>
Converts <em class="parameter"><code>sorted_path</code></em> to a path on the child model of <em class="parameter"><code>tree_model_sort</code></em>.  
That is, <em class="parameter"><code>sorted_path</code></em> points to a location in <em class="parameter"><code>tree_model_sort</code></em>.  The 
returned path will point to the same location in the model not being 
sorted.  If <em class="parameter"><code>sorted_path</code></em> does not point to a location in the child model, 
<a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL--CAPS"
><code class="literal">NULL</code></a> is returned.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>tree_model_sort</code></em> :</span></p></td>
<td> A <a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>sorted_path</code></em> :</span></p></td>
<td> A <a class="link" href="GtkTreeModel.html#GtkTreePath" title="GtkTreePath"><span class="type">GtkTreePath</span></a> to convert
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> A newly allocated <a class="link" href="GtkTreeModel.html#GtkTreePath" title="GtkTreePath"><span class="type">GtkTreePath</span></a>, or <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL--CAPS"
><code class="literal">NULL</code></a>
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="gtk-tree-model-sort-convert-iter-to-child-iter"></a><h3>gtk_tree_model_sort_convert_iter_to_child_iter ()</h3>
<pre class="programlisting">void                gtk_tree_model_sort_convert_iter_to_child_iter
                                                        (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter">GtkTreeIter</a> *child_iter,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter">GtkTreeIter</a> *sorted_iter);</pre>
<p>
Sets <em class="parameter"><code>child_iter</code></em> to point to the row pointed to by <em class="parameter"><code>sorted_iter</code></em>.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>tree_model_sort</code></em> :</span></p></td>
<td> A <a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>child_iter</code></em> :</span></p></td>
<td> An uninitialized <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter"><span class="type">GtkTreeIter</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>sorted_iter</code></em> :</span></p></td>
<td> A valid <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter"><span class="type">GtkTreeIter</span></a> pointing to a row on <em class="parameter"><code>tree_model_sort</code></em>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="gtk-tree-model-sort-reset-default-sort-func"></a><h3>gtk_tree_model_sort_reset_default_sort_func ()</h3>
<pre class="programlisting">void                gtk_tree_model_sort_reset_default_sort_func
                                                        (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort);</pre>
<p>
This resets the default sort function to be in the 'unsorted' state.  That
is, it is in the same order as the child model. It will re-sort the model
to be in the same order as the child model only if the <a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a>
is in 'unsorted' state.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><em class="parameter"><code>tree_model_sort</code></em> :</span></p></td>
<td> A <a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a>
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="gtk-tree-model-sort-clear-cache"></a><h3>gtk_tree_model_sort_clear_cache ()</h3>
<pre class="programlisting">void                gtk_tree_model_sort_clear_cache     (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort);</pre>
<p>
This function should almost never be called.  It clears the <em class="parameter"><code>tree_model_sort</code></em>
of any cached iterators that haven't been reffed with
<a class="link" href="GtkTreeModel.html#gtk-tree-model-ref-node" title="gtk_tree_model_ref_node ()"><code class="function">gtk_tree_model_ref_node()</code></a>.  This might be useful if the child model being
sorted is static (and doesn't change often) and there has been a lot of
unreffed access to nodes.  As a side effect of this function, all unreffed
iters will be invalid.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><em class="parameter"><code>tree_model_sort</code></em> :</span></p></td>
<td> A <a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a>
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="gtk-tree-model-sort-iter-is-valid"></a><h3>gtk_tree_model_sort_iter_is_valid ()</h3>
<pre class="programlisting"><a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"
>gboolean</a>            gtk_tree_model_sort_iter_is_valid   (<a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort">GtkTreeModelSort</a> *tree_model_sort,
                                                         <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter">GtkTreeIter</a> *iter);</pre>
<p>
</p>
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Warning</h3>
<p>
This function is slow. Only use it for debugging and/or testing purposes.
</p>
</div>
<p>
</p>
<p>
Checks if the given iter is a valid iter for this <a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a>.</p>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>tree_model_sort</code></em> :</span></p></td>
<td> A <a class="link" href="GtkTreeModelSort.html" title="GtkTreeModelSort"><span class="type">GtkTreeModelSort</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>iter</code></em> :</span></p></td>
<td> A <a class="link" href="GtkTreeModel.html#GtkTreeIter" title="GtkTreeIter"><span class="type">GtkTreeIter</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#TRUE--CAPS"
><code class="literal">TRUE</code></a> if the iter is valid, <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#FALSE--CAPS"
><code class="literal">FALSE</code></a> if the iter is invalid.

</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.2</p>
</div>
</div>
<div class="refsect1" lang="en">
<a name="GtkTreeModelSort.property-details"></a><h2>Property Details</h2>
<div class="refsect2" lang="en">
<a name="GtkTreeModelSort--model"></a><h3>The <code class="literal">"model"</code> property</h3>
<pre class="programlisting">  "model"                    <a class="link" href="GtkTreeModel.html" title="GtkTreeModel">GtkTreeModel</a>*         : Read / Write / Construct Only</pre>
<p>The model for the TreeModelSort to sort.</p>
</div>
</div>
<div class="refsect1" lang="en">
<a name="GtkTreeModelSort.see-also"></a><h2>See Also</h2>
<p>
<a class="link" href="GtkTreeModel.html" title="GtkTreeModel"><span class="type">GtkTreeModel</span></a>, <a class="link" href="GtkListStore.html" title="GtkListStore"><span class="type">GtkListStore</span></a>, <a class="link" href="GtkTreeStore.html" title="GtkTreeStore"><span class="type">GtkTreeStore</span></a>, <a class="link" href="GtkTreeSortable.html" title="GtkTreeSortable"><span class="type">GtkTreeSortable</span></a>, <a class="link" href="GtkTreeModelFilter.html" title="GtkTreeModelFilter"><span class="type">GtkTreeModelFilter</span></a>
</p>
</div>
</div>
<div class="footer">
<hr>
          Generated by GTK-Doc V1.11</div>
</body>
</html>
